package pdamh.model.unidade;

import junit.framework.TestCase;
import pdamh.model.exceptions.ValorInvalidoException;
import pdamh.model.util.Dimensao;

public class SubUnidadeTest extends TestCase {
	SubUnidade sub = null;
	UnidadeOperacional unidade = null;

	protected void setUp() {
		try {
			super.setUp();
			unidade = new UnidadeOperacional(2);
			sub = new SubUnidade(unidade, "id", new Dimensao(1.2), new Dimensao(2.5), 1, 1, 1.0 , 1.0);
		} catch (Exception e) {
		}
	}

	

	

//	public void testSetNumeroDeEmissores() {
//		setUp();
//		assertEquals(sub.getNumeroDeEmissores(), 0);
//		try {
//			sub.setNumeroDeEmissores();
//			assertEquals(sub.getNumeroDeEmissores(), 12);
//		} catch (ValorInvalidoException e) {
//			fail();
//			e.printStackTrace();
//		}
//		try {
//			sub.setNumeroDeEmissores();
//			fail();
//		} catch (ValorInvalidoException e) {
//		}
//	}

	public void testGetArea() {
		try {
			SubUnidade sub = null;
			UnidadeOperacional unidade = new UnidadeOperacional(2);
			sub = new SubUnidade(unidade, "old", new Dimensao(1.5), new Dimensao(2.0), 1,1, 1.0, 1.0);
			assertEquals(new Dimensao(3), sub.getArea());
		} catch (Exception e) {
			fail(e.getMessage());
		}
	}

	public void testSetArea() {
		try {
			SubUnidade sub = null;
			UnidadeOperacional unidade = new UnidadeOperacional(2);
			sub = new SubUnidade(unidade, "old", new Dimensao(1.5), new Dimensao(2.0), 1, 1 , 1.0, 1.0 );
			assertEquals(new Dimensao(3), sub.getArea());
			sub.setArea();
			assertEquals(new Dimensao(3), sub.getArea());
		} catch (Exception e) {
			fail(e.getMessage());
		}
	}

	public void testGetVazaoDaSu() {
		setUp();
		assertEquals(0.003, sub.getVazaoDaSu());
	}

//	public void testSetVazaoDaSu() {
//		setUp();
//		try {
//			sub.setVazaoDaSu();
//			fail();
//		} catch (ValorInvalidoException e) {
//		}
//		try {
//			sub.setVazaoDaSu(new Dimensao(-1));
//			fail();
//		} catch (ValorInvalidoException e) {
//		}
//		try {
//			sub.setVazaoDaSu(new Dimensao(0));
//		} catch (ValorInvalidoException e) {
//			fail();
//		}
//	}

	public void testSetComprimentoDaTerciaria() {
		setUp();
		try {
			sub.setComprimentoDaTerciaria(null);
			fail();
		} catch (ValorInvalidoException e) {
		}
		try {
			sub.setComprimentoDaTerciaria(new Dimensao(-1));
			fail();
		} catch (ValorInvalidoException e) {
		}
		try {
			sub.setComprimentoDaTerciaria(new Dimensao(0));
		} catch (ValorInvalidoException e) {
			fail();
		}
	}

	public void testSetComprimentoDaTerciariaDN100() {
		setUp();
		try {
			sub.setComprimentoDaTerciariaDN100(null);
			fail();
		} catch (ValorInvalidoException e) {
		}
		try {
			sub.setComprimentoDaTerciariaDN100(new Dimensao(-1));
			fail();
		} catch (ValorInvalidoException e) {
		}
		try {
			sub.setComprimentoDaTerciariaDN100(new Dimensao(0));
		} catch (ValorInvalidoException e) {
			fail();
		}
	}

	public void testSetComprimentoDaTerciariaDN75() {
		setUp();
		try {
			sub.setComprimentoDaTerciariaDN75(null);
			fail();
		} catch (ValorInvalidoException e) {
		}
		try {
			sub.setComprimentoDaTerciariaDN75(new Dimensao(-1));
			fail();
		} catch (ValorInvalidoException e) {
		}
		try {
			sub.setComprimentoDaTerciariaDN75(new Dimensao(0));
		} catch (ValorInvalidoException e) {
			fail();
		}
	}

	public void testSetComprimentoDaTerciariaDN50() {
		setUp();
		try {
			sub.setComprimentoDaTerciariaDN50(null);
			fail();
		} catch (ValorInvalidoException e) {
		}
		try {
			sub.setComprimentoDaTerciariaDN50(new Dimensao(-1));
			fail();
		} catch (ValorInvalidoException e) {
		}
		try {
			sub.setComprimentoDaTerciariaDN50(new Dimensao(0));
		} catch (ValorInvalidoException e) {
			fail();
		}
	}

	public void testSetLarguraDaTerciaria() {
		setUp();
		try {
			sub.setLarguraDaTerciaria(null);
			fail();
		} catch (ValorInvalidoException e) {
		}
		try {
			sub.setLarguraDaTerciaria(new Dimensao(-1));
			fail();
		} catch (ValorInvalidoException e) {
		}
		try {
			sub.setLarguraDaTerciaria(new Dimensao(0));
		} catch (ValorInvalidoException e) {
			fail();
		}
	}

	



	public void testEqualsObject() {
		setUp();
		SubUnidade aux;
		try {
			aux = new SubUnidade(new UnidadeOperacional(2), "id", new Dimensao(1.2), new Dimensao(2.5), 1, 1 , 1.0, 1.0);
			assertTrue(sub.equals(aux));
		} catch (Exception e) {
		}
	}
}
